import router from "@/router";
import { useLoginUserStore } from "@/store/userStore";
import { ACCESS_NUM } from "./accessNum";
import checkAccess from "./checkAccess";

// 进入页面前进行权限校验
router.beforeEach(async (to, from, next) => {
  // 获取当前登录用户
  const loginUserStore = useLoginUserStore()
  let loginUser = loginUserStore.loginUser

  // 如果之前没有尝试获取过登录信息,也就是没登录过,才自动登录
  // 避免每次进入页面都要自动获取一次用户信息
  if(!loginUser || !loginUser.userRole) {
    // 加await保证同步,等待用户登录成功并获取值后,才执行后续代码
    await loginUserStore.fetchLoginUser()
    loginUser = loginUserStore.loginUser
  }
  

  // 当前页面需要的权限  如果不存在access字段，则默认为不需要登录
  const needAccess = to.meta.access as string ?? ACCESS_NUM.NOT_LOGIN

  // 要跳转的页面必须登录(需要权限)
  if(needAccess !== ACCESS_NUM.NOT_LOGIN) {

    //如果没登录, 跳转到登录页
    if(!loginUser || !loginUser.userRole || loginUser.userRole === ACCESS_NUM.NOT_LOGIN) {
      next(`/user/login?redirect=${to.path}`)
    }

    // 如果已经登录,判断权限是否足够,如果不足跳转到无权限页面
    if(!checkAccess(loginUser, needAccess)) {
      console.log('111111', loginUser, needAccess)
      next('/noAuth')
      return
    }
  } 
  next()
})